package handlers

import (
	"context"
	"docker-monitor/internal/mcp/core"
)

// SetupTools 配置并注册所有工具到MCP服务器
func SetupTools(server *core.MCPServer) {
	// 计算器工具
	setupCalculatorTool(server)
	// 工具列表工具
	setupToolsListTool(server)
}

// setupCalculatorTool 设置计算器工具
func setupCalculatorTool(server *core.MCPServer) {
	// 创建简化的计算器工具对象
	calculatorTool := map[string]any{
		"name": "calculate",
		"description": "执行基本的算术运算",
	}

	// 注册工具处理函数
	server.AddTool(calculatorTool, func(ctx context.Context, request any) (any, error) {
		// 简单返回一个示例结果
		return map[string]float64{"result": 42.0},
			nil
	})
}

// setupToolsListTool 设置工具列表工具
func setupToolsListTool(server *core.MCPServer) {
	// 创建工具列表工具对象
	listTool := map[string]any{
		"name": "tools/list",
		"description": "获取所有已注册的工具列表",
	}

	// 注册工具处理函数
	server.AddTool(listTool, func(ctx context.Context, request any) (any, error) {
		// 调用服务器内部方法获取工具列表
		// 由于这里无法直接访问server.tools，我们可以返回一个简单的响应
		// 实际的工具列表会由server.go中的addToolsListTool方法提供
		return map[string]string{"message": "请使用MCP服务器内部实现的tools/list工具"},
			nil
	})
}